home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 92 / JPI.CD < prev    next >
Text File  |  1995-09-14  |  11KB  |  192 lines

  1.       @VKét szék közt@N...
  2.  
  3.       @VTopSpeed Pascal@N
  4.  
  5.           A Borland cég Turbo Pascalja hosszú éveken át vezette  a
  6.       PC-s Pascalok két versenyzôbôl álló mezônyét -- a  Microsoft
  7.       Quick Pascal nem igazán szorította meg. Most gyors,  elszánt
  8.       vetélytársak vették üldözôbe.
  9.           Az  amerikai  Jensen  and  Partners  szoftverház   (JPI)
  10.       alaposan  be   akar  fûteni   a  babérjain   üldögélô  Turbo
  11.       Pascalnak. A Borlandból kivált és saját céget -- a JPI-t  --
  12.       alapító szakemberek nem ismeretlenek a programozási  nyelvek
  13.       területén.  Elôször  1988 végén  hallattak  magukról, amikor
  14.       piacra dobtak egy erôsen optimalizáló compilert, a  TopSpeed
  15.       Modula--2-t,     Turbo-stílusú     integrált      fejlesztôi
  16.       környezettel.  Hamarosan  jött  a  következô  szenzáció.   A
  17.       Modula--2 compiler (amelyet kezdettôl fogva önmagában írtak)
  18.       2.0 verzióját követôen  Modula--2-ben elkészítettek --  és a
  19.       Modula--2 compilerrel  közös programkörnyezetbe  integráltak
  20.       -- elôször egy C-,  majd egy C++-compilert. A  Modula--2, C,
  21.       C++  könyvtárakat  kölcsönösen  használni  lehet   mindegyik
  22.       nyelvbôl.  A  JPI   jogosan  beszél  többnyelvû   fejlesztôi
  23.       rendszerrôl.
  24.           Figyelembe    vették     a    kor     irányzatait    is:
  25.       objektumorientált   nyelvi   elemekkel   bôvítették   ki   a
  26.       Modula--2-t,  programkönyvtárral  támogatják  az  OS/2  és a
  27.       Presentation Manager  használatát, s  compilereikkel Windows
  28.       3.0  alá  is  készíthetôk  programok.  Nagy  fejlesztésekhez
  29.       jelenleg a JPI többnyelvû rendszere a legalkalmasabb  PC-ken
  30.       --   ezt   maga   a   JPI   mutatja   be  leglátványosabban:
  31.       Modula--2-ben és C-ben dolgoznak fejlesztôik.
  32.           A TopSpeed-család legújabb gyermekét, a TopSpeed Pascalt
  33.       most mutatták be (Ada  és Fortran compilert terveznek  még).
  34.       Nyilvánvaló, hogy  a PC-világban  minden Pascal  rendszernek
  35.       össze kell mérnie az erejét  a Turbo Pascallal. A léc  pedig
  36.       elég magasan van a 6.0 verzió és a Turbo Pascal for  Windows
  37.       megjelenése óta.
  38.           A   JPI   két   érvet   hangsúlyoz   Pascal    compilere
  39.       reklámozásában: a compiler betartja  az ISO szabványt és  az
  40.       általa kigenerált kód roppant hatékony. Míg egy optimalizáló
  41.       compiler mindig nagy tekintélyû a programozók körében, addig
  42.       a JPI az ISO szabványhoz való ragaszkodással bakot lôtt.  Az
  43.       ISO   szabványt   betartó   programok   ugyan  nagymértékben
  44.       hordozhatók   --   könnyen   átvihetôk   a    legkülönbözôbb
  45.       számítógépcsaládok  között  --,  de  az  ISO  szûkös  nyelvi
  46.       lehetôségeivel nem lehet  kereskedelmi programokat írni.  Az
  47.       ISO  szabvány  nem   tartalmaz  sem  modul-koncepciót,   sem
  48.       file-kezelést  (a  szekvenciális  file-okat  kivéve),  és  a
  49.       rendszerközeli  programozáshoz  szükséges  alapvetô   nyelvi
  50.       elemeket sem  határozza meg  -- mindezek  nélkül pedig  csak
  51.       tankönyvekbe lehet programokat írni.
  52.           E tényeket  természetesen ismerik  a JPI  fejlesztôi is.
  53.       Ezért jócskán kibôvítették az ISO szabvány lehetôségeit.  Az
  54.       általuk bevezetett modul-koncepció erôsen követi a Modula--2
  55.       mintáját.  Egy   egység  (unit)   --  így   hívják  a  külön
  56.       lefordítható programrészeket --  @Kinterface@N részbôl (itt  van
  57.       leírva az összes exportált konstans, típus, változó, eljárás
  58.       stb.  ""viselkedése")  és  @Kimplementációs@N  részbôl  (itt van
  59.       részletesen   kifejtve   a   megvalósításuk)   áll.   Ez  az
  60.       elkülönítés nem  új módszer,  már a  régi UCSD  Pascalban is
  61.       megvolt.  A  TopSpeed  Pascalban azonban  a  két  rész külön
  62.       file-ban van.  Ennek az  az elônye,  hogy az  implementációs
  63.       részt  úgy  is  lehet módosítani,  hogy  az  interface részt
  64.       változatlanul  hagyjuk  --  tehát  a  modult  importáló  más
  65.       modulokat, programokat nem  kell újrafordítani. Ráadásul  --
  66.       míg az interface rész más  modulok számára is látható --  az
  67.       implementációs részt  lefordított alakban  (szabványos .OBJ,
  68.       .LIB  formátumban)  is  el  lehet  adni,  ami  megkönnyíti a
  69.       kereskedelmi célú programfejlesztést.
  70.           Ha egy program vagy egy másik unit akar meghívni egy így
  71.       kialakított  könyvtári  modult,  akkor  az  átvett   neveket
  72.       (konstansok stb. neveit) be  kell írni egy importlistába.  E
  73.       megoldás  erôsen különbözik  az UCSD-étôl  -- ott  a  teljes
  74.       modul   átvételéhez   elég  egy   egyszerû   USES  utasítás,
  75.       névütközések  (névazonosságok) esetén  minôsítô részként  az
  76.       importált nevek elé  lehet tenni a  modul nevét. E  megoldás
  77.       nem olyan elegáns, mint a  Modula--2-é, de jól bevált, és  a
  78.       Turbo Pascalba is átvették. TopSpeed Pascalban is lehetséges
  79.       a  teljes import  (@KIMPORT <modulnév>  *;@N), de  az  importált
  80.       neveket  nem  lehet  újradefiniálni,  ami  néha  kellemetlen
  81.       lehet.
  82.           A compiler mellé adott unitok jól használhatók. Sajnos a
  83.       file-kezelést  -- a  file-ok a  standard Pascalban  egyszerû
  84.       szekvenciák  --  nem   a  legmodernebb  szempontok   alapján
  85.       bôvítették  ki.   A  TopSpeed   könyvtárt  használva   ugyan
  86.       tetszôleges file-ok kezelhetôk, de vagy csak olvasásra  vagy
  87.       csak  írásra  lehet  megnyitni  azokat.  A  programozó hiába
  88.       keresi a legtöbbet használt  módot, amely lehetôvé tenné  az
  89.       írást és  olvasást is.  Ugyan mellékeltek  egy kis,  @KStreams@N
  90.       nevû  demo  unitot,  amely  tetszôleges  file-kezelést  tesz
  91.       lehetôvé  igen gépközeli  szinten, de  a kézikönyvben  nincs
  92.       hozzá útmutató, és a Streams unit eljárásai nehézkesebbek  a
  93.       Turbo  Pascaléinál.  (@KA  többnyelvû  TopSpeed   környezetben
  94.       szabadon használhatók a Modula--2,  C és C++ file-kezelô  és
  95.       más eljárások, de ehhez meg kell venni azokat a compilereket
  96.       is -- a szerk.@N.)
  97.           A  rendszerközeli  nyelvi  elemeknél  egy  sor   bôvítés
  98.       található,  amelyeket  hasonló  formában  tartalmaz  a Turbo
  99.       Pascal   is:   eljárások  az   operációs   rendszerrel  való
  100.       kapcsolathoz, a processzor regisztereinek, a memóriának és a
  101.       portoknak közvetlen kezeléséhez. A speciális  típusátalakító
  102.       operátorokkal  a TopSpeed  compiler fontos  eszközt kínál  a
  103.       Pascal  szigorú  típusellenôrzésének  kikerülésére,  amire a
  104.       rendszerprogramozás   területén    gyakran   van    szükség.
  105.       Határozottan  megkülönböztetik  a  valódi   típusátalakítást
  106.       (például   @KByte   in   Real@N)   és   a    típusinterpretációt
  107.       (típusértelmezés). Az elkülönítés  helyes, és a  programokat
  108.       olvashatóbbá  teszi.  Sajnos a  választott  szintaxis nagyon
  109.       szokatlan.  A Turbo  Pascal és  a Modula--2  a  típusneveket
  110.       függvénynevek  formájában  használja  típusátalakításra   --
  111.       például  @KWORD(i)@N  alakítja át  az  @Ki@N-t @KWORD@N  típusúvá  --, a
  112.       TopSpeed  Pascal  viszont  a  típusnevet  egy  operátorral a
  113.       változónévhez kapcsolja, például: @Ki::WORD@N.
  114.           Érdekes módon  szinte teljesen  átvették a  Turbo Pascal
  115.       string-koncepcióját:  a  stringek  maximum  255  karakterbôl
  116.       állhatnak, a nulladik karakter  tárolja a string hosszát.  A
  117.       stringkezelô rutinok is  a Turbo Pascalt  követik. Ezenkívül
  118.       saját  eljárásokat  lehet írni  tetszôleges  méretû stringek
  119.       kezelésére, a  Modula--2 nyílt  tömbjeihez hasonlóan.  Ilyen
  120.       stringeket   használva   azonban  csak   a   kétféle  string
  121.       látszólagos kompatibilitása érhetô el egy  compiler-kapcsoló
  122.       segítségével  (a compiler  ekkor nem  fog tiltakozni  a  két
  123.       típus  keverése  ellen),   a  hagyományos  Pascal   stringek
  124.       esetleges túlcsordulása nem elôzhetô meg.
  125.           A  könyvtárban  hiába  keressük  a  Turbo  Pascal  @KGraph@N
  126.       unitjának    megfelelôjét.    Cserébe    párhuzamosan   futó
  127.       folyamatokból  álló  programok  írhatók.  Ma  már   egyetlen
  128.       programozási   nyelv  sem   jelenik  meg   objektumorientált
  129.       bôvítések nélkül. A TopSpeed Pascal is figyelembe veszi  ezt
  130.       az irányzatot. A unitok körülbelül ugyanolyan  lehetôségeket
  131.       kínálnak mint  Turbo Pascalban,  néhány dologban  még túl is
  132.       mennek azon. A szintaxis azonban erôsen eltérô.
  133.           A   módszerek   (method)  itt   virtuálisak,   hacsak  a
  134.       programozó   nem  kifejezetten   statikusnak  nevezi   ôket.
  135.       Pontosan fordítva  mûködik a  Turbo Pascal:  ott a módszerek
  136.       statikusak,  hacsak  nem írjuk  elô  virtuális voltukat.  Ez
  137.       gyorsítja   a   kódot  minden   olyan   esetben,  amikor   a
  138.       programíráskor nem  foglalkozunk a  sebességgel (a  compiler
  139.       elvégzi  azt   helyettünk).  TopSpeed   Pascalban  nincsenek
  140.       konstruktorok  és  destruktorok,  viszont  minden   objektum
  141.       kaphat  egy  elôkészítô   (inicializáló)  részt,  ami   nagy
  142.       segítséget  jelent.  Az  osztályok  implementálása   hasonló
  143.       szintaxisú a  unitokéhoz (@KIMPLEMENTATION  OF <osztály>@N).  Ez
  144.       javítja  az  áttekinthetôséget. Van  egy  operátor, amellyel
  145.       ellenôrizni  lehet,  hogy  egy  adott  objektum  egy   adott
  146.       osztályhoz  tartozik-e  vagy  sem.  A  fölérendelt osztályok
  147.       módszereit  is  lehet  használni,  még  akkor  is,  ha  ezek
  148.       helyileg el vannak nyomva. Ezenkívül örökölhetôk több eltérô
  149.       osztály tulajdonságai is (multiple inheritance). Ez is új az
  150.       eddigi Pascal rendszerekhez képest.
  151.           Bármennyit hivatkozik a JPI a TopSpeed Pascal erényeire,
  152.       a szabványt ma a  Turbo Pascal jelenti. Kérdés,  hogy milyen
  153.       ráfordítással jár a Turbo Pascal programok áttevése TopSpeed
  154.       alá -- ami vonzó lehetôség, hiszen a TopSpeed Pascal  sokkal
  155.       gyorsabb kódot generál mint  a Turbo. Ugyanazok a  programok
  156.       vele lefordítva átlagosan kétszer olyan gyorsan futnak.
  157.           A kézikönyvben hosszú fejezet foglalkozik a Turbo Pascal
  158.       forrásszövegek   átírásával.   Bemutatnak   egy  automatikus
  159.       konvertáló   programot,   amely   lényegesen   csökkenti  az
  160.       átalakítás   idôigényét.   Sok   programmal   teszteltük   e
  161.       segédprogramot. Azokat a programokat, amelyek közel állnak a
  162.       Pascal szabványhoz, és a Turbo specialitásaiból csak keveset
  163.       használnak ki, a TopSpeed a konvertálás után azonnal, minden
  164.       további  átdolgozás  nélkül  át  tudja  venni.  Minél többet
  165.       használ a program  a Borland bôvítéseibôl,  annál nehezebben
  166.       ""rágja  meg"  a konvertáló  program,  néhány specialitással
  167.       pedig semmit nem tud kezdeni.
  168.           A JPI TopSpeed  Pascalja tehát két  szék közt a  pad alá
  169.       esett. Az ISO szabvány túl szûk a gyakorlati programozáshoz,
  170.       a  bôvítések pedig  korlátozzák a  hordozhatóságot. A  Turbo
  171.       Pascal forrásszövegek problémamentes átvételéhez viszont túl
  172.       különcködôk  a  bôvítések.  Néhány  éve  a  programozók  még
  173.       lelkesen  vetették volna  rá magukat  egy olyan  compilerre,
  174.       amely integrált fejlesztôi  környezetet kínál, kiváló  kódot
  175.       állít elô és ráadásul egy többnyelvû compiler-család  tagja.
  176.       Ma erôsen kérdéses, hogy a TopSpeed Pascal nagy sikert fog-e
  177.       aratni, mivel a Turbo Pascal uralkodik a piacon. Megjelent a
  178.       Stonybrook Pascal+  is, amely  egy --  szintén Modula--2-ben
  179.       fejlesztô  --  amerikai   cégnek  a  TopSpeedhez   hasonlóan
  180.       kiválóan optimalizáló compilere.  E hármas verseny  elônyeit
  181.       természetesen leginkább a programozók élvezik.
  182.  
  183.       @KUlrich Kern@N
  184.  
  185.  
  186.       @VFutási idôk (másodperc)@N
  187.  
  188.       Rendezés              TopSpeed    Turbo
  189.  
  190.       10 ezer egész szám      12          24
  191.       1000 string             13          22
  192.